vlabwikiaorg_ru-20200214-history
Алгоритм работы НТМ
Описание документа Здесь представлено краткое описание основных алгоритмов работы НТМ сетей на основе работ Джеф Хокинса (Jeff Hawkins) и Джорджа Дайлипа (Dileep George) из компании Numenta (Веб сайт компании, где есть множество интересных документов на английском). Кроме этого высказывается ряд предложений по расширению функциональности элементов НТМ с целью большего приближения к известным нам на текущий момент алгоритмам работы ГМ. В частности, речь идет об обратных связях и инстинктах. Дополнительно обсуждаются варианты отображения работы НТМ. Что такое НТМ НТМ - это сокращение от Hierarchical Temporal Memory - новой компьютерной технологии, моделирующей и основанной на некоторых (гипотетических, надо сказать, хотя, правдоподобных) алгоритмах работы коры головного мозга (ГМ). Идеологию НТМ заложил Джеф Хокинс (известный компьютерный предприниматель, основатель Palm Inc (сайт Palm) и Handspring, архитектор Palm Pilot и смартфонов Treo ) изложив ее в своей книге On Intelligence (2004). (В 2007 книга была переведена на русский язык (и попала в РуНет)). Позднее Джордж Дайлип перевел идеи Джефа Хокинса в алгоритмическую форму, что и было названо НТМ. Подробнее алгоритм НТМ обсуждается ниже. Компания Numenta в настоящее время активно разрабатывает технологию НТМ и приглашает всех желающих присоединиться к ее освоению. На сайте компании можно (после простой регистрации) бесплатно скачать фреймворк NuPIC, реализующий работу настраиваемой НТМ, а также документацию к нему и множество материалов по НТМ на английском языке. Цели разработки НТМ В своей книге On Intiligence Джефф Хокинс постарался разработать теорию, как человеческий мозг способен решать задачи распознавания и обучения, которые компьютеры решать не могут, несмотря на их вычислительную мощь и все усилия разработчиков. Хокинс предложил следующие принципы работы неокортекса, которые назвал "Memory-Prediction framework" (~ "инструментарий Память-Предсказание"). Приведем эти тезисы по диссертации Дж. Дайлипа в нашем переводе. # Неокортекс создает у себя некоторую модель на основе приходящих к нему пространственно-временных паттернов. Цель этой модели - предсказание последующих входных паттернов. # Неокортекс состоит из повторяющихся базовых вычислительных блоков, называемых канонические нейронные сети коры (canonical cortical circuit). С вычислительной точки зрения, такая цепь может рассматриваться как некоторый узел (некоторой сети), который много раз повторяется. # Кора мозга организована иерархически. То есть узлы - базовые вычислительные единицы - организованы в иерархическую структуру подобную дереву. # Главная функция неокортекса - моделировать мир, от которого к нему приходят сенсорные сигналы. Эта модель строится путем запоминания паттернов и последовательностей во всех узлах некоторой пространственно - временной иерархии. Эта модель используется для предсказания дальнейших входов. # Неокортекс строит свою модель без внешнего управления. # Каждый узел в иерархии запоминает большое количество паттернов и последовательностей. Метод распознавания образов неокортекса в основном основан на хранении (памяти) множества паттернов. # Выход каждого узла относится к (/говорит о) последовательностям паттернов, которые он "выучил" ("The output of a node is in terms of the sequences of patterns it has learned"). # Информация передается вверх и вниз по иерархии с целью распознавания информации, снятия ее неоднозначности и "заглядывания вперед", чтобы предсказать следующий входной паттерн. Условно говоря, технология НТМ, предложенная (вероятно) Дж. Дайлипом пытается, хотя бы частично, реализовать в себе вышеперечисленные принципы. Краткое описание работы НТМ Если описывать общими словами, что такое делает НТМ, то можно выделить следующие основные функциональные блоки: # НТМ наблюдает за входным потоком воздействий от внешнего мира # НТМ пытается выделить по нему Причины или Источники этих воздействий # НТМ пытается предсказать дальнейшее поведение Источников воздействий (необязательный пункт) Кроме этого авторами выдвигается идея, что на основе предсказания НТМ может управлять поведением Своего объекта, но на практике, до реализации такого поведения НТМ дело не дошло. Точнее сказать, текущий период исследований сосредоточен, преимущественно, вокруг второго пункта. Алгоритм НТМ Предварительное замечание: Алгоритм НТМ не очень-то и сложный, но довольно объемный. Поэтому, хотя он и не требует суровой высшей математики, мы будем подходить к нему постепенно. Рассмотрим вопрос выделения обобщенных причин из входного потока информации о воздействиях. Для начала, немного теории вопроса. НТМ пытается воссоздать природный механизм распознавания живыми существами их сенсорного потока и выделения из него отдельных объектов. В большинстве случаев воздействие любого объекта выражается в некоторой последовательности сенсорных сигналов к мозгу живого существа. НТМ имеет на входе как раз эти сенсорные данные, снимаемые с некоторой частотой, достаточно высокой для отслеживания интересующих нас объектов. Логично предположить, что повторяющееся и\или продолжительное наблюдение за одним объектом будет давать нам некоторые повторяющиеся пространственно-временные паттерны в сенсорном потоке, инициированным этим Объектом. Например, у него будут почти повторяющиеся виды (даже если он движется), будут повторяющиеся звуковые последовательности, может быть запах, ну и другие повторяющиеся признаки. Выделив и запомнив такие паттерны, мы сможем впоследствии распознать их и связать с вызвавшей их Причиной. Собственно этим и занимается каждый узел НТМ сети. Он наблюдает выделенный ему участок сенсорного пространства, выделяет в нем повторяющиеся паттерны, отслеживает, как они переходят друг в друга. "Стабильные" последовательности переходов полагаются вызванными одной причиной. Таким образом, по прошествии некоторого обучения, Узел может подобрать несколько Причин, проявившихся на его участке, и, для каждого нового сенсорного входа, он может сопоставить каждой причине степень "похожести" на данный сенсорный вход, или вероятность ее появления. При этом сам Узел "не понимает" что это такое за причины. Но, зная типичные последовательности их поведения, он может сделать некоторые предположения о развитии событий на сенсорном входе, если он достаточно достоверно опознал одну из причин. Далее следует стандартный фокус: выходы узлов этого (первого) уровня передаются на вход узлу следующего уровня. Они уже имеют дело с распределением вероятности Причин, выделенных на предыдущем уровне Узлами НТМ и, таким образом, обобщают их "наблюдения" и соотносят их друг с другом. Как это можно сделать практически, мы рассмотрим ниже, а пока отметим, что так, постепенно поднимаясь по иерархии запоминающих узлов, мы можем распознать все более и более обобщенные (в человеческом понимании) Причины. Вариантов конкретно-математической реализации изложенной выше идеологии может быть несколько, одна из них придумана в компании Numenta и излагается ниже. Для начала раздадим Узлам первого уровня области наблюдения за сенсорным пространством решаемой задачи. Это могут быть некоторые вектора (например, для распознавания звуков и слов по спектру) или прямоугольные области (для визуальных задач). Просматривая входной поток Узлы выделят, в начале, повторяющиеся пространственные паттерны, согласно заданному алгоритму и мере "непохожести" их друг на друга. Далее, можно посчитать как часто один из паттернов переходит в другой и составить матрицу переходов. Также можно составить граф переходов, где каждый паттерн будет вершиной, а каждому направленному ребру от него будет соответствовать (ненулевая) вероятность его перехода во второй паттерн. Далее этот граф переходов разбивается на кластеры "сильно связанных" паттернов. Это можно сделать используя, напрмер, известный алгоритм Agglomerative Hierarchical Clustering (AHC). Этот алгоритм начинает с высоко-вероятных переходов и заканчивает добавление вершин графа в очередной кластер, как только дойдет до заданной ему границы вероятности. Понятно, что полученные кластеры серьезно зависят от этой границы. Если взять ее близкой к единице, то весь граф разобьется в отдельные вершины. Если взять ее близкой к нулю - весь граф войдет в один кластер. Дайлип в своем алгоритме НТМ снабдил каждый Узел НТМ параметром - максимальным числом кластеров. И в соответствии с ним и подбирается вероятностная граница для алгоритма разбиения на кластеры - АНС. Совершенно очевидно, что в данном месте алгоритма НТМ применено т.н. "шаманство" с целью получения желаемого результата. Трудно представить, что нейронные кластеры коры ГМ занимаются какими-то подобными вычислениями. Гораздо более вероятно, что они просто запоминают некоторые повторяющиеся последовательности и далее работают с ними. "Визуальный" пример Проще получить представление о работе НТМ на конкретном примере посвященному распознаванию движущихся простых визуальных образов. Введение Одной из проблем в распознавании зрительных образов является то, что человек очевидно легко распознает визуальные внешние объекты, независимо от их движения, размера, освещения, искажений, "шума" а, иногда, и ракурса. Это называется проблемой инвариантности, которую компьютерам решить очень сложно. Продолжение следует M.Netov 11:39, 6 марта 2009 (UTC) Категория:Михаил Нетов